﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Data.SqlClient;
using Follow.Utils;
using Follow.Model;
using System.Transactions;

namespace Follow.DataAccess
{
    public class LogDAO
    {
        private SqlDataReader reader = null;
        private SqlConnection conn = null;
        private SqlCommand cmd = null;

        public LogDAO()
        {
            conn = ConnectionUtils.getConnection();
        }

        //public void insert(Cliente cliente)
        //{
        //    using (var transaction = new TransactionScope())
        //    {
        //        try
        //        {
        //            conn.Open();
        //            String sqlCommand = " insert into cliente (nome, cnpj, cidade, estado, ativo) values " +
        //                                " (@nome, @cnpj, @cidade, @estado, @ativo) ";
        //            cmd = new SqlCommand(sqlCommand, conn);
        //            cmd.Parameters.Add(new SqlParameter("nome", cliente.Nome));
        //            cmd.Parameters.Add(new SqlParameter("cnpj", cliente.CNPJ));
        //            cmd.Parameters.Add(new SqlParameter("cidade", cliente.Cidade));
        //            cmd.Parameters.Add(new SqlParameter("estado", cliente.Estado));
        //            cmd.Parameters.Add(new SqlParameter("ativo", cliente.Ativo));
        //            cmd.ExecuteNonQuery();
        //            transaction.Complete();
        //        }
        //        catch (Exception)
        //        {
        //            transaction.Dispose();
        //            throw;
        //        }
        //        finally
        //        {
        //            if (reader != null)
        //            {
        //                reader.Close();
        //            }

        //            if (conn != null)
        //            {
        //                conn.Close();
        //            }
        //        }
        //    }
        //}

        public void insert(Int32 idUsuario, String comandoSQL, String acao, String funcionalidade)
        {
            using (var transaction = new TransactionScope())
            {
                try
                {
                    conn.Open();
                    String sqlCommand = @" insert into transacao (usuario, funcionalidade, acao, comando, datatransacao)
                                    values (@usuario, @func, @acao, @comando, @datatransacao) ";

                    cmd = new SqlCommand(sqlCommand, conn);
                    cmd.Parameters.Add(new SqlParameter("usuario", idUsuario));
                    cmd.Parameters.Add(new SqlParameter("func", funcionalidade));
                    cmd.Parameters.Add(new SqlParameter("acao", acao));
                    cmd.Parameters.Add(new SqlParameter("comando", comandoSQL));
                    cmd.Parameters.Add(new SqlParameter("datatransacao", DateTime.Now));


                    cmd.ExecuteNonQuery();
                    transaction.Complete();

                }
                catch (SqlException ex)
                {
                    transaction.Dispose();
                    throw new Exception(ex.Message);
                }
                finally
                {
                    if (reader != null)
                    {
                        reader.Close();
                    }

                    if (conn != null)
                    {
                        conn.Close();
                    }
                }
            }
        }
        

    }
}